/*
 * Licensed to the Tai Ping Jin Ke
 *
 * Copyright (c) 2022 .
 * All rights reserved.
 * 项目名称：太平金科-基础组件封装层-ElasticSearch-缺省实现
 * 版权说明：本软件属太平金融科技服务(上海)有限公司所有，在未获得太平金融科技服务(上海)有限公司正式授权情况下，任何企业和个人，不能获取、阅读、安装、传播本软件涉及的任何受知识产权保护的内容。
 */
package com.taipingframework.boot.es.conditions.interfaces;

import java.io.Serializable;

/**
 * 查询条件封装
 * <p>比较值</p>
 *
 * @param <Children>
 * @param <R>
 */
public interface Compare<Children, R> extends Serializable {

    /**
     * 等于 =
     *
     * @param column    字段
     * @param val       值
     * @return children
     */
    Children eq(R column, Object val);

    /**
     * 不等于 &lt;&gt;
     *
     * @param column    字段
     * @param val       值
     * @return children
     */
    Children ne(R column, Object val);

    /**
     * 大于 &gt;
     *
     * @param column    字段
     * @param val       值
     * @return children
     */
    Children gt(R column, Object val);

    /**
     * 大于等于 &gt;=
     *
     * @param column    字段
     * @param val       值
     * @return children
     */
    Children ge(R column, Object val);

    /**
     * 小于 &lt;
     *
     * @param column    字段
     * @param val       值
     * @return children
     */
    Children lt(R column, Object val);

    /**
     * 小于等于 &lt;=
     *
     * @param column    字段
     * @param val       值
     * @return children
     */
    Children le(R column, Object val);

    /**
     * LIKE '%值%'
     *
     * @param column    字段
     * @param val       值
     * @return children
     */
    Children like(R column, Object val);

    /**
     * NOT LIKE '%值%'
     *
     * @param column    字段
     * @param val       值
     * @return children
     */
    Children notLike(R column, Object val);

    /**
     * LIKE '%值'
     *
     * @param column    字段
     * @param val       值
     * @return children
     */
    Children likeLeft(R column, Object val);

    /**
     * LIKE '值%'
     *
     * @param column    字段
     * @param val       值
     * @return children
     */
    Children likeRight(R column, Object val);

}
